package com.test.conf;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;

import com.test.bean.SalgradeStatus;

/**
 * 自定义类型处理器 1.实现TypeHandler 或者继承baseTypeHandler
 * 
 * @author huyong
 *
 */
public class MyEnumSttusTypeHandler implements TypeHandler<SalgradeStatus> {
	/**
	 * 定义当前数据如何保存到数据库中
	 */
	public void setParameter(PreparedStatement ps, int i, SalgradeStatus parameter, JdbcType jdbcType)
			throws SQLException {
		ps.setString(i, parameter.getCode().toString());

	}

	/**
	 * 从数据库中获取值
	 */
	public SalgradeStatus getResult(ResultSet rs, String columnName) throws SQLException {
		// 拿到数据库中保存的code
		int code = rs.getInt(columnName);
		// 根据从数据库中拿到的枚举的状态码 返回一个枚举对象
		System.out.println("从数据库中的到的状态为" + code);
		return SalgradeStatus.getSalgradeStatus(code);
	}

	public SalgradeStatus getResult(ResultSet rs, int columnIndex) throws SQLException {
		// 拿到数据库中保存的code
		int code = rs.getInt(columnIndex);
		// 根据从数据库中拿到的枚举的状态码 返回一个枚举对象
		System.out.println("从数据库中的到的状态为" + code);
		return SalgradeStatus.getSalgradeStatus(code);
	}

	public SalgradeStatus getResult(CallableStatement cs, int columnIndex) throws SQLException {
		// 拿到数据库中保存的code
		int code = cs.getInt(columnIndex);
		// 根据从数据库中拿到的枚举的状态码 返回一个枚举对象
		System.out.println("从数据库中的到的状态为" + code);
		return SalgradeStatus.getSalgradeStatus(code);
	}

}
